﻿using System;
using System.Collections.Generic;
using System.Data;
using hello.csharp.helper;
using hello.csharp.helper.Enums;

namespace hello.csharp.common.Interfaces
{
    /// <summary>
    /// 数据库初始化
    /// </summary>
    public interface IDbInitialise
    {
        /// <summary>
        /// 平台预书写的SQL语句集合，Key是数据库类型
        /// </summary>
        Dictionary<DatabaseType, SqlBox> SqlSets { get; set; }

        /// <summary>
        /// 初始化数据库，包括库中的表是否存在，如不存在创建
        /// </summary>
        /// <returns>是否全部校验成功</returns>
        bool Run();

        /// <summary>
        /// 设置获取数据库连接的方法
        /// </summary>
        /// <param name="openConnectionMethods">数据库连接的方法集合</param>
        void SetConnections(IEnumerable<Func<IDbConnection>> openConnectionMethods);
    }
}